/*--------------------------------*- C++ -*----------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  2.0.0                                 |
|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    object      controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

application     icoFoam;

startFrom       startTime;

startTime       0;

stopAt          endTime;

endTime         0.5;

deltaT          0.005;

writeControl    timeStep;

writeInterval   20;

purgeWrite      0;

writeFormat     ascii;

writePrecision  6;

writeCompression off;

timeFormat      general;

timePrecision   6;

runTimeModifiable true;

functions
{
    faceObj1
    {
        type            faceSource;
        functionObjectLibs ("libfieldFunctionObjects.so");

        enabled         true;
        outputControl   outputTime;

        // Output to log&file (true) or to file only
        log             true;

        // Output field values as well
        valueOutput     true;

        // Type of source: patch/faceZone/sampledSurface
        source          patch;

        // if patch or faceZone: name of patch or faceZone
        sourceName      movingWall;

        //// if sampledSurface: dictionary with a sampledSurface
        //// Note: the sampledSurfaces will have cell-values, i.e.
        //// non-interpolated. Also will not sample surface fields.
        //sampledSurfaceDict
        //{
        //    type            cuttingPlane;
        //    planeType       pointAndNormal;
        //    pointAndNormalDict
        //    {
        //        basePoint       (0 0.099 0);
        //        normalVector    (0 1 0);
        //    }
        //}

        // Operation: areaAverage/sum/weightedAverage ...
        operation       areaAverage;

        fields
        (
            p
            phi         // surface fields not supported for sampledSurface
            U
        );
    }

    faceObj2
    {
        type            faceSource;
        functionObjectLibs ("libfieldFunctionObjects.so");
        enabled         true;
        outputControl   outputTime;
        log             true;
        valueOutput     true;
        source          faceZone;
        sourceName      f0;
        operation       sum;

        fields
        (
            phi
        );
    }

    cellObj1
    {
        type            cellSource;
        functionObjectLibs ("libfieldFunctionObjects.so");
        enabled         true;
        outputControl   outputTime;
        log             true;
        valueOutput     true;
        source          cellZone;
        sourceName      c0;
        operation       volAverage;

        fields
        (
            p
            U
        );
    }
}

// ************************************************************************* //
